package STUDENT.HOANGQUOCVIET.OOPs.BTThem;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import STUDENT.HOANGQUOCVIET.OOPs.BTThem.objbt1.BanDoc;
import STUDENT.HOANGQUOCVIET.OOPs.BTThem.objbt1.DauSach;
import STUDENT.HOANGQUOCVIET.OOPs.BTThem.objbt1.QLMuonSach;
 
public class Models {
	Scanner sc;
	List<BanDoc> dsBanDoc = new ArrayList<BanDoc>();
	List<DauSach> dsDauSach = new ArrayList<DauSach>();
	Map<Integer, QLMuonSach> dsSachMuon = new HashMap<Integer, QLMuonSach>();
	QLMuonSach objQLMS = new QLMuonSach();

	public BanDoc TimBanDoc(int MaBD) {
		BanDoc objBanDoc = new BanDoc();
		for (int i = 0; i < dsBanDoc.size(); i++) {
			if (MaBD == dsBanDoc.get(i).getMaBD()) {
				objBanDoc.setHoTen(dsBanDoc.get(i).getHoTen());
				objBanDoc.setDiaChi(dsBanDoc.get(i).getDiaChi());
				objBanDoc.setSDT(dsBanDoc.get(i).getSDT());
				objBanDoc.setLoaiDB(dsBanDoc.get(i).getLoaiDB());
			}
		}
		return objBanDoc;
	}

	public boolean KtraTrungSach(int MaSach, List<DauSach> dsDauSach) {
		for (int i = 0; i < dsDauSach.size(); i++) {
			if (MaSach == dsDauSach.get(i).getMaSach())
				;
			return true;
		}
		return false;
	}

	public DauSach LaySach(int MaSach) {
		DauSach obj = new DauSach();
		for (int i = 0; i < dsDauSach.size(); i++) {
			if (MaSach == dsDauSach.get(i).getMaSach()) {
				obj.setMaSach(MaSach);
				obj.setChuyenNganh(dsDauSach.get(i).getChuyenNganh());
				obj.setTenSach(dsDauSach.get(i).getTenSach());
				obj.setTacGia(dsDauSach.get(i).getTacGia());
				obj.setNamSX(dsDauSach.get(i).getNamSX());
			}
		}
		return obj;
	}

	public void ThemDauSach(int sl) {		
		for (int i = 0; i < sl; i++) {
			DauSach objDauSach = new DauSach();
			sc = new Scanner(System.in);
			System.out.println("Mời bạn nhập vào Mã Sách " + (i + 1) + ":");
			objDauSach.setMaSach(sc.nextInt());
			sc.nextLine();
			System.out.println("Mời bạn nhập vào Tên sách " + (i + 1) + ":");
			objDauSach.setTenSach(sc.nextLine());
			System.out.println("Mời bạn nhập Tên Tác giả " + (i + 1) + ":");
			objDauSach.setTacGia(sc.nextLine());
			System.out.println("Mời bạn nhập Năm Sản Xuât " + (i + 1) + ":");
			objDauSach.setNamSX(sc.nextInt());
			sc.nextLine();
			dsDauSach.add(objDauSach);
		}

	}

	public void Hien() {
		for (int i = 0; i < dsDauSach.size(); i++) {
			System.out.println("----------Thông tin sách " + (i + 1) + " :------------");
			System.out.println("Mã Sách: " + dsDauSach.get(i).getMaSach());
			System.out.println("Tên sách: " + dsDauSach.get(i).getTenSach());
			System.out.println("Tên tác giả: " + dsDauSach.get(i).getTacGia());
			System.out.println("Chuyên ngành: " + dsDauSach.get(i).getChuyenNganh());
			System.out.println("Năm sản xuât: " + dsDauSach.get(i).getNamSX());

		}

	}

	public void ThemBanDoc(int sl) {
		BanDoc objBanDoc = new BanDoc();
		for (int i = 0; i < sl; i++) {
			sc = new Scanner(System.in);
			System.out.println("Mời bạn nhập mã thành viên mới thứ " + (i + 1));
			objBanDoc.setMaBD(sc.nextInt());
			sc.nextLine();
			System.out.println("Mời nhập tên thành viên mới thứ " + (i + 1));
			objBanDoc.setHoTen(sc.nextLine());
			System.out.println("Mời nhập địa chỉ của thành viên mới thứ " + (i + 1));
			objBanDoc.setDiaChi(sc.nextLine());
			System.out.println("Mời nhập số điện thoại của thành viên mới thứ " + (i + 1));
			objBanDoc.setSDT(sc.nextLine());
			System.out.println("Mời bạn nhập loại bạn đọc cho thành viên mới thứ " + (i + 1));
			sc = new Scanner(System.in);
			objBanDoc.setLoaiDB(sc.nextLine());
			dsBanDoc.add(objBanDoc);
		}

	}

	public void HienBanDoc() {
		for (int i = 0; i < dsBanDoc.size(); i++) {
			System.out.println("----------Thông tin bạn đọc thứ " + (i + 1) + " :----------");
			System.out.println("Mã: " + dsBanDoc.get(i).getMaBD());
			System.out.println("Tên: " + dsBanDoc.get(i).getHoTen());
			System.out.println("Địa chỉ: " + dsBanDoc.get(i).getDiaChi());
			System.out.println("Số điện thoại: " + dsBanDoc.get(i).getSDT());
			System.out.println("Loại thành viên: " + dsBanDoc.get(i).getLoaiDB());
		}
	}

	public void ThemBangMuonSach() {
		int a = 0, b = 0;
		DauSach objDauSach = new DauSach();
		List<DauSach> dsCho = new ArrayList<DauSach>();
		System.out.println("Mã thành viên mượn sách:");
		sc = new Scanner(System.in);
		b = sc.nextInt();
		sc.nextLine();
		// KtraTrungSach(b, dsBanDoc);
		objQLMS.setMaBD(b);
		if (dsSachMuon.get(b) == null) {
			System.out.println("Số lượng sách cho mượn lần này:");
			int sl = sc.nextInt();
			for (int i = 0; i < sl; i++) {
				System.out.println("Mã sách cho mượn thứ " + (i + 1));
				a = sc.nextInt();
				sc.nextLine();
				if (KtraTrungSach(a, dsDauSach) == false) {
					System.out.println("Mã sách này không có trong danh sách");
					;
					return;
				}
				dsCho.add(LaySach(a));
				objQLMS.setDsDauSach(dsCho);
			}

		}
		else {
			if (dsSachMuon.get(b).getDsDauSach().size() > 5) {
				System.out.println("Bạn này đã mượn 5 quyển sách rồi");
				return;
			}
			System.out.println("Số lượng sách cho mượn lần này:");
			int sl = sc.nextInt();
			for (int i = 0; i < sl; i++) {
				System.out.println("Mã sách cho mượn thứ " + i);
				a = sc.nextInt();
				sc.nextInt();
				if (KtraTrungSach(a, dsDauSach) == false) {
					System.out.println("Mã sách này không có trong danh sách");
					;
					return;
				}
				if (KtraTrungSach(a, dsSachMuon.get(b).getDsDauSach()) == false) {
					System.out.println("Bạn đã thêm sách này vào rồi");
					return;
				}
				dsCho.add(LaySach(a));
				objQLMS.setDsDauSach(dsCho);
			}
		}
		dsSachMuon.put(b, objQLMS);
		
	}

	public void HienBangMuonSach(int a) {
		System.out.println("--------Thông tin mượn sách-------");
		System.out.println("Họ tên: " + TimBanDoc(a).getHoTen());
		System.out.println("---Danh sách sách đã mượn---");
		for (int i = 0; i < dsSachMuon.size(); i++) {
			System.out.println("Mã sách: " + dsSachMuon.get(a).getDsDauSach().get(i).getMaSach());
			System.out.println("Tên sách: " + dsSachMuon.get(a).getDsDauSach().get(i).getTenSach());
			System.out.println("Tác giả: " + dsSachMuon.get(a).getDsDauSach().get(i).getTacGia());
			System.out.println("Năm sản xuất: " + dsSachMuon.get(a).getDsDauSach().get(i).getNamSX());
		}
	}
}
